package com.shrct.businessprocess.budget;

import com.shrct.businessprocess.budget.RCHasCostBudget;
import com.shrct.businessprocess.budget.RCHasCostBudgetPayRequest;
import com.shrct.businessprocess.budget.impl.RCHasCostBudgetPayProcessImpl;
import com.shrct.businessprocess.budget.proxy.RCHasCostBudgetPayProcessProxy;
import com.shrct.businessprocess.organization.RCEmployee;
import com.shrct.businessprocess.project.RCProjectMoney;
import edu.fudan.langlab.domain.workflow.BusinessProcess;
import edu.fudan.mylang.pf.EntityImplementation;

@EntityImplementation(implementBy = RCHasCostBudgetPayProcessImpl.class)
public interface RCHasCostBudgetPayProcess extends BusinessProcess {
  public abstract void start(final RCProjectMoney amount, final RCHasCostBudget budget, final String comment);
  
  public abstract void modify_cancel(final String comment);
  
  public abstract void modify_modify(final String comment);
  
  public abstract void businessManAudit_agree(final String comment);
  
  public abstract void businessManAudit_refuse(final String comment);
  
  public abstract void ceoAudit_agree(final String comment);
  
  public abstract void ceoAudit_refuse(final String comment);
  
  public abstract void financeLeaderAudit_agree(final String comment);
  
  public abstract void financeLeaderAudit_refuse(final String comment);
  
  public abstract void financeManPay_agree(final String comment);
  
  public abstract void financeManPay_refuse(final String comment);
  
  public abstract RCHasCostBudget getBudget();
  
  public abstract RCHasCostBudgetPayProcess setBudget(final RCHasCostBudget budget);
  
  public abstract RCHasCostBudgetPayRequest getPayRequest();
  
  public abstract RCHasCostBudgetPayProcess setPayRequest(final RCHasCostBudgetPayRequest payRequest);
  
  public abstract RCEmployee getStarter();
  
  public abstract RCHasCostBudgetPayProcess setStarter(final RCEmployee starter);
  
  public abstract RCHasCostBudgetPayProcessProxy toProxy();
}
